package yz.cp.back.admin.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.collect.Maps;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import yz.cp.back.common.utils.PageKit;
import yz.cp.back.s.entity.SysMessageSend;
import yz.cp.back.s.service.ISysMessageSendService;

import java.util.Map;

@Service
public class MessageSendManage {

    @Autowired
    private ISysMessageSendService sysMessageSendService;

    public IPage<SysMessageSend> findByCondition(SysMessageSend messageSend, Pageable pageable) {
        QueryWrapper<SysMessageSend> wrapper = new QueryWrapper<>();
        IPage<SysMessageSend> page = PageKit.buildPage(pageable, wrapper);

        wrapper.lambda().eq(StringUtils.isNotBlank(messageSend.getMessageId()), SysMessageSend::getMessageId, messageSend.getMessageId())
                .eq(messageSend.getStatus() != null, SysMessageSend::getStatus, messageSend.getStatus())
                .eq(StringUtils.isNotBlank(messageSend.getUserId()), SysMessageSend::getUserId, messageSend.getUserId());

        return sysMessageSendService.page(page, wrapper);
    }

    public Map count(SysMessageSend messageSend){
        Map map= Maps.newHashMap();
        QueryWrapper<SysMessageSend> wrapper1 = new QueryWrapper<>();
        QueryWrapper<SysMessageSend> wrapper2 = new QueryWrapper<>();
        QueryWrapper<SysMessageSend> wrapper3 = new QueryWrapper<>();
        wrapper1.lambda().eq(SysMessageSend::getUserId,messageSend.getUserId()).eq(SysMessageSend::getStatus,0);
        Integer unreadCount=sysMessageSendService.count(wrapper1);
        wrapper2.lambda().eq(SysMessageSend::getUserId,messageSend.getUserId()).eq(SysMessageSend::getStatus,1);
        Integer hasreadCount=sysMessageSendService.count(wrapper2);
        wrapper3.lambda().eq(SysMessageSend::getUserId,messageSend.getUserId()).eq(SysMessageSend::getStatus,2);
        Integer recyclebinCount=sysMessageSendService.count(wrapper3);
        map.put("unreadCount",unreadCount);
        map.put("hasreadCount",hasreadCount);
        map.put("recyclebinCount",recyclebinCount);
        return map;

    }

}
